/**
* \file main.c
* \brief Comprend la fonction main pour pouvoir jouer
*/


#include <stdio.h>
#include <stdlib.h>

#include <SDL/SDL_ttf.h>

#include "Parametres.h"
#include "Combinaison.h"
#include "Jeu.h"
#include "menu.h"
#include "affichageTxt.h"
#include "affichageSDL.h"

// Pour le mode texte
void jeu (int niveau,int nbjoueurs)
{
    Parametres param;
    Jeu jeu;
    initParametres(&param, niveau);
    initJeuTexte (&jeu, param, nbjoueurs);
    deroulementJeuTexte (&jeu, param);
    libereParametres(&param);
    libereJeu(&jeu);

}


int main ( int argc, char** argv )
{
    //Pour le mode SDL
    if(argc == 1)
    {
        // Définition de notre écran
        const int SCREEN_WIDTH = 1000;
        const int SCREEN_HEIGHT = 660;
        const int SCREEN_BPP = 32;

        Jeu jeu;
        Parametres param;
        int applicationOuverte;

        SDL_Init(SDL_INIT_VIDEO);
        SDL_Surface *screen = NULL;
        screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_HWSURFACE);

        //Mise en place de la barre de caption
	    SDL_WM_SetCaption( "Mastermind", NULL );

        applicationOuverte=1;

        while(applicationOuverte)
        {
            int tailleSelonMenu=0;
            int nbjoueurs=0;
            int navigation=0;
            int init=1;

            while(navigation >= 0 && navigation < 6)
            {
                applicationOuverte = menuSDL(screen, &navigation, &tailleSelonMenu, &nbjoueurs);
            }

            if(navigation == 6)
            {
                initParametres(&param, tailleSelonMenu);
                initJeuSDL(&jeu, param,nbjoueurs,screen,&init);

                if(init==1)
                {
                    applicationOuverte = deroulementJeuSDL(screen, &jeu, param);
                }

                else
                {
                    applicationOuverte =0;
                }

            // A la fin de la partie, on libère le jeu proprement
            libereJeu(&jeu);
            libereParametres(&param);
            }
        }

        SDL_Quit();
        return 0;
    }


    // Pour le mode texte
    else if(argc==2 && strcmp(argv[1],"txt")==0)
    {
        int cm;
        int nbjoueurs;

        do
        {
            menuAff();
            cm = menuQuestion();

            if(cm<6)
            {
                do{
                    printf("Entrez le nombre de joueurs (1 ou 2) :\n");
                    scanf("%d",&nbjoueurs);
                  }
                 while(nbjoueurs!=1 && nbjoueurs!=2);
            }


            switch(cm)
            {
                case 3 :
                    jeu(3,nbjoueurs);
                    break;

                case 4 :
                    jeu(4,nbjoueurs);
                    break;

                case 5 :
                    jeu(5,nbjoueurs);
                    break;

                case 6:
                    exit(EXIT_FAILURE);
                    break;
            }
            fflush(stdout);
        }
        while(cm!=0);

        return 0;
    }


    else
    {
        return 0;
    }

}



/*

// Pour faire des test

int main()
{
    Parametres param;
    Combinaison comb1;
    Combinaison comb2;
    Jeu jeu;
    int PB;

    initParametres(&param, 3);
    printf("param.taille= %d et param.nbCouleursUtilisables= %d\n",param.taille,param.nbCouleursUtilisables);

    initCombinaison(&comb1, param);
    printf("comb.tab= %p et comb.taille= %d\n",comb1.tab,comb1.taille);

    initCombinaison(&comb2, param);
    saisieCombinaison(&comb1,param);
    saisieCombinaison(&comb2,param);

    PB=pionsBonneCouleur(&comb1,&comb2,param);
    printf("Il y a %d pions de la même couleur mais pas placé au même endroit entre les deux combinaisons\n",PB);

    libereCombinaison(&comb1);
    // printf("comb.tab= %p et comb.taille= %d\n",comb1.tab,comb1.taille);

    initJeuTexte(&jeu,param,1);
    deroulementJeuTexte(&jeu,param);

    libereParametres(&param);
    //printf("param.taille= %d et param.nbCouleursUtilisables= %d\n",param.taille,param.nbCouleursUtilisables);
    //printf("1er chiffre de la premiere combinaison testee : %d\n",jeu.tabCombinaisonsTestees[1].tab[1]);

    libereJeu(&jeu);

    return 0;
}
*/


